Memory cells are implemented in devices such as integrated circuits to store data. The data may be used during operation of the device or, in the case of programmable integrated circuits, may be used to configure the integrated circuit to perform functions desired by the user of the device. However, for a variety of reasons, data may become corrupted. The corrupted data may impact the performance of the integrated circuit. In some instances, the corrupted data may render the integrated circuit unusable until the correct data is restored in the memory. While techniques exist to both detect and correct data errors without having to reload the entire memory, such techniques have significant limitations.
For an integrated circuit to continuously function properly, it is necessary that the data stored in a memory is not corrupted. Accordingly, data is often read back to determine whether there is an error in the stored data. Error checking may include both error detection and correction in the case of a single error, or error detection without error correction in the case of multiple errors. However, error correction has significant limitations. More particularly, as the dimensions of transistors continue to decrease, conventional techniques will not enable the correction of all errors in memory.